Статья добавлена: 2013-11-24 21:28:50
Автор: Сергей

Типы ACL списков


Стандартный ACL-список является самым простым из трех типов. При создании стандартного ACL-списка для IP-протокола, фильтрация по ACL-спискам осуществляется на основе исходного IP-адреса пакета. Стандартные ACL-списки определяют разрешения пакетов на основе всего протокола, такого как IP-протокол. Таким образом, при запрете узлового устройства стандартным ACL-списком, запрещаются все службы этого узла. Такой тип ACL-списка полезен для разрешения доступа всех служб определенного пользователя или локальной сети (LAN) через маршрутизатор с запретом доступа с других IP-адресов. Стандартные ACL-списки определяются по присваиваемым им номерам. Номера из диапазона от 1 до 99 и от 1300 до 1999 присваиваются спискам доступа, разрешающим или блокирующим IP-трафик.

Расширенный ACL-список используется для фильтрации не только по исходному IP-адресу, но и по конечному IP-адресу, протоколу и номерам портов. Расширенные ACL-списки используются чаще стандартных, поскольку они являются более определенными и обеспечивают более высокий уровень контроля. Расширенным ACL-спискам присваиваются номера из диапазона от 100 до 199 и от 2000 до 2699.

Именованный ACL-список (NACL-список) имеет формат стандартного или расширенного списка и обозначается описательным именем, а не номером. При настройке именованных ACL-списков, маршрутизатор IOS использует режим подкоманды NACL.


Настройка стандартных листов доступа


Присвойте ACL-список одному или более интерфейсам, указав входящий или исходящий трафик. Применяйте стандартный ACL-список как можно ближе к адресу назначения.

  • R2(config-if)#ip access-group номер списка доступа [in | out]

Следующие команды позволяют поместить список доступа access-list 5 для интерфейса Fa0/0 маршрутизатора R2 с фильтрацией входящего трафика:

  • R2(config)#interface fastethernet 0/0
    R2(config-if)#ip access-group 5 in


По умолчанию в ACL-списке к интерфейсу применяется out направление. Несмотря на то, что out направление установлено по умолчанию, крайне важно указывать направление во избежание путаницы и для обеспечения фильтрации трафика в правильном направлении.
Чтобы удалить ACL-список из интерфейса без изменения самого ACL-списка, используйте команду no ip access-group интерфейс.

Некоторые команды ACL-списка позволяют оценить правильность синтаксиса, порядок инструкций и размещение в интерфейсах.
  • show ip interface

Эта команда выводит сведения об IP-интерфейсе с указанием любых присвоенных ACL-списков.
  • show access-lists [номер списка доступа]

Эта команда позволяет вывести содержимое всех ACL-списков маршрутизатора. Эта команда также выводит на экран число совпадений по каждой разрешающей или запрещающей инструкции с момента применения ACL-списка. Чтобы вывести определенный список, добавьте имя ACL-списка или номер в качестве параметра команды.
  • show running-config

Эта команда выводит на экран все настроенные ACL-списки маршрутизатора, даже если они в данный момент не применены к интерфейсу.

Настройка расширенных ACL-списков


Основным отличием синтаксиса расширенного ACL-списка является необходимость указывать протокол после условия разрешения или запрещения.
Определяет протоколы уровня 3/4. Стандартные варианты включают:
  • eigrp Протокол маршрутизации EIGRP компании Cisco
    esp Протокол шифрования ESP
    gre Протокол туннелирования сетевых пакетов GRE компании Cisco
    icmp Протокол ICMP
    igmp Протокол IGMP
    ip Любой протокол Интернета
    ipinip IP в IP-туннелировании
    ospf Протокол маршрутизации OSPF
    pcp Протокол компрессии данных (PCP)
    tcp Протокол управления передачей данных (TCP)
    udp Протокол датаграмм пользователя (UDP)

Пример расширенного ACL-списка:
  • R1(config)#access-list 105 permit tcp 192.168.5.0 0.0.0.255 host 172.16.5.254 eq http

eq - равно;
gt - больше;
lt - меньше.
Для запрета нескольких портов в одном правиле используется команда range:
  • R1(config)#access-list 181 deny tcp any 192.168.77.0 0.0.0.255 range 20 21

В данном правиле запрещен доступ к ftp из сети 192.168.77.0 255.255.255.0

Настройка именованных списков доступа


Для создания именованного ACL-списка используется следующая команда:

  • ip access-list {standard | extended} имя


После выполнения этой команды маршрутизатор переключается в режим подкоманд конфигурации NACL. После указания начальной команды именования необходимо ввести все разрешающие и запрещающие инструкции, по одной за раз. В NACL-списках используется синтаксис команд стандартного или расширенного ACL-списка с разрешающей или запрещающей инструкцией в начале.

Именованный ACL-список применяется к интерфейсу аналогичным применению стандартного или расширенного ACL-списка образом.
  • Создание списка контроля доступа для виртуального терминала

Создание списка контроля доступа для виртуального терминала осуществляется аналогично списку для интерфейса. Однако для применения ACL-списка к каналам VTY служит другая команда. Вместо команды ip access-group используется команда access-class.
Пример:
R2(config)access-list 2 permit host 209.165.202.130
R2(config)line vty 0 4
R2(config-line)access-class 3 in

Настройка ACL-списков для поддержания установленного трафика


ACL-списки часто создаются для защиты внутренней сети от внешних источников. Однако защита внутренней сети не должна препятствовать внутренним пользователям в получении доступа ко всем ресурсам. При обращении внутренних пользователей к внешним ресурсам, запрашиваемые ресурсы должны проходить через ACL-список. Например, если внутреннему пользователю необходимо установить подключение к внешнему веб-серверу, ACL-список должен разрешать запрашиваемые html-пакеты. Так как ACL-списки устанавливают неявный отказ в доступе, ресурсы необходимо специально разрешить ACL-списком. Отдельные разрешающие инструкции для всех возможных запрашиваемых ресурсов могут образовывать длинный ACL-список и оставлять бреши в безопасности.

Для решения этой проблемы можно создать отдельную инструкцию, разрешающую внутренним пользователям устанавливать TCP-сеанс с внешними ресурсами. После трехстороннего подтверждения TCP и установления подключения все пакеты, передаваемые между двумя устройствами, будут разрешены. Для этого необходимо использовать следующее ключевое слово: established.

  • access-list 101 permit tcp any any established

Использование этой инструкции позволит разрешить все внешние tcp-пакеты при условии, что они являются ответом на внутренние запросы. Разрешение входящих ответов по установленным подключениям является разновидностью проверки состояния пакетов (SPI).

Кроме установленного трафика, внутреннему пользователю может потребоваться отправка эхо-запроса внешним устройствам. При этом нежелательно позволять внешним пользователям направлять эхо-запросы или прослеживать устройства во внутренней сети. В этом случае, инструкцию с ключевыми словами echo-reply и unreachable можно использовать для разрешения ответов на эхо-запросы и сообщений о недостижимости. При этом эхо-запрос, отправленный с внешних источников, будет запрещен, если в другой инструкции не указывать специального разрешения.
Пример:
  • R2(config)#access-list 101 permit tcp any any established
    R2(config)#access-list 101 permit icmp any any echo-reply
    R2(config)#access-list 101 permit icmp any any unreachable
    R2(config)#access-list 101 deny any any

Применение данных правил к внутреннему интерфейсу локальной сети
  • R2(config)#interface fastethernet fa0/0
    R2(config-if)#ip access-group 101 out

При оценке расширенного ACL-списка важно помнить о следующих ключевых моментах: ключевое слово tcp разрешает или запрещает протоколы, такие как FTP, HTTP, Telnet и т. д.; ключевая фраза permit ip используется для разрешения всего IP-трафика, включая протоколы TCP, UDP и ICMP.

Проверка работоспособности ACL-списка

По умолчанию в инструкции ACL-списка сохраняется число совпадений, которое указывается в конце каждой инструкции. Для просмотра совпадений служит следующая команда:
  • show access-list
Основное число совпадений, выводимое при помощи команды show access-list, указывает на количество инструкций ACL-списка с совпадением и число обработанных пакетов. В выходных данных не указывается исходный или конечный адрес пакета или используемый протокол.
Для получения дополнительной информации о разрешенных или запрещенных пакетах необходимо задействовать процесс протоколирования. Ведение журнала (протоколирование) включается для отдельных инструкций ACL-списка. Чтобы задействовать эту возможность, добавьте параметр log в конец каждой инструкции ACL-списка, по которой необходимо вести учет. После окончания просмотра логов данную функцию нужно будет отключить. Отключить ведение журнала можно при помощи следующей команды:
  • no logging console
Для полного отключения отладки следует использовать следующую команду:
  • undebug all
Чтобы отключить определенную отладку, например, ip packet, потребуется следующая команда:
  • no debug ip packet
Уровни ведения журналов:
alerts Требуется немедленное действие (серьезность=1)
critical Критическое состояние (серьезность=2)
debugging Сообщения отладки (серьезность=7)
emergencies Систему нельзя использовать (серьезность=0)
errors Состояние ошибки (серьезность=3)
filtered Вести журнал фильтрации
guaranteed Выводить консольные сообщения
informational Информационные сообщения (серьезность=6)
notifications Нормальное, но значащее состояние (серьезность=5)
warnings Состояние предупреждения (серьезность=4)
xml Вести журнал в XML
При ведении журнала следует добавить инструкцию deny ip any в конец ACL-списка. Эта инструкция позволяет отслеживать число совпадений запрещенных пакетов. Используйте команду
  • reload in 5
при работе с удаленными маршрутизаторами и тестировании работоспособности ACL-списка. Данная команда перезагрузит маршрутизатор если он станет недоступным через 5 минут.
Добавте
  • deny ip any any log
для контроля числа пакетов, которые не соответствуют предыдущим инструкциям ACL-списка.

Для удаления количества совпадения каждой инструкции ACL-списка используется команда
  • clear access-list counters
Для отображения IP-адресов узла источника и назначения каждого принятого или отправленного всеми интерфейсами маршрутизатора пакета используется команда
  • debug ip packet
Команда debug ip packet отображает пакеты, у которых в качестве источника или назначения указан интерфейс маршрутизатора. Отображаются и пакеты, отклоненные ACL-списком на уровне интерфейса.
Если пакеты просто проходят через маршрутизатор и ACL-список их не блокирует по IP-адресу, сообщение об отладке не генерируется.

Подразумеваемое отклонение может неожиданным образом отразиться на другом трафике. В таком случае нужно использовать явно выраженную команду deny ip any any log для отслеживания пакетов, несоответствующих каким-либо из более ранних инструкций ACL-списка.

Правильное размещение ACCESS-LIST

Стандартный ACL-список фильтрует только IP-адреса источников; соответственно, они должны быть как можно ближе к узлу назначения. Недостаток расходует полосу пропускания.
Расширенный ACL-список размещается как можно ближе к источнику, позволяет достичь других сетей и экономит полосу пропускания.